Repository navigation
refactor(user): migrate admin routes from server - #2738
Conversation
af567e7 to
c4c5f1f
Compare
shikanime
left a comment
There was a problem hiding this comment.
Verdict : Changements demandés
Migration fidèle sur le plan requêtes (where, take: 5, rejet de rôle inconnu, union before/after des rôles impactés — la sémantique legacy est respectée). Point positif : la logique where est copiée sans « amélioration » silencieuse, ce qui rend la parité vérifiable ligne à ligne. Un point bloquant de pont événements → plugins, détaillé inline.
shikanime
left a comment
There was a problem hiding this comment.
And remove // -- comments
Aligne le module user sur le pattern établi par le module zone (#2487) : - `user-queries.utils.ts` : suppression du `userSelect`/`UserRecord` morts, signatures sur `Prisma.TransactionClient`, `createUser` purement DB (la validation du doublon email monte dans le service en `ConflictException`). - `user.service.ts` : extraction de `resolveAdminRoleIds`, `patchUsersInTx`, `emitImpactedRoleEvents` ; patch des rôles sous transaction. - `user.module.ts` : imports repliés sur `InfrastructureModule` (déjà exporté par celui-ci). Refs #2738 Co-authored-by: Automata <automata@shikanime.studio> Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr> Change-Id: I3bd632f95dd466e585698eba738efcd86a6a6964
Aligne le module user sur le pattern établi par le module zone (#2487) : - `user-queries.utils.ts` : suppression du `userSelect`/`UserRecord` morts, signatures sur `Prisma.TransactionClient`, `createUser` purement DB (la validation du doublon email monte dans le service en `ConflictException`). - `user.service.ts` : extraction de `resolveAdminRoleIds`, `patchUsersInTx`, `emitImpactedRoleEvents` ; patch des rôles sous transaction. - `user.module.ts` : imports repliés sur `InfrastructureModule` (déjà exporté par celui-ci). Refs #2738 Co-authored-by: Automata <automata@shikanime.studio> Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr> Change-Id: I3bd632f95dd466e585698eba738efcd86a6a6964
2f18b61 to
b9e3500
Compare
Aligne le module user sur le pattern établi par le module zone (#2487) : - `user-queries.utils.ts` : suppression du `userSelect`/`UserRecord` morts, signatures sur `Prisma.TransactionClient`, `createUser` purement DB (la validation du doublon email monte dans le service en `ConflictException`). - `user.service.ts` : extraction de `resolveAdminRoleIds`, `patchUsersInTx`, `emitImpactedRoleEvents` ; patch des rôles sous transaction. - `user.module.ts` : imports repliés sur `InfrastructureModule` (déjà exporté par celui-ci). Refs #2738 Co-authored-by: Automata <automata@shikanime.studio> Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr> Change-Id: I3bd632f95dd466e585698eba738efcd86a6a6964
b9e3500 to
ccba51a
Compare
Aligne le module user sur le pattern établi par le module zone (#2487) : - `user-queries.utils.ts` : suppression du `userSelect`/`UserRecord` morts, signatures sur `Prisma.TransactionClient`, `createUser` purement DB (la validation du doublon email monte dans le service en `ConflictException`). - `user.service.ts` : extraction de `resolveAdminRoleIds`, `patchUsersInTx`, `emitImpactedRoleEvents` ; patch des rôles sous transaction. - `user.module.ts` : imports repliés sur `InfrastructureModule` (déjà exporté par celui-ci). Refs #2738 Co-authored-by: Automata <automata@shikanime.studio> Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr> Change-Id: I3bd632f95dd466e585698eba738efcd86a6a6964
ccba51a to
cdb5dcb
Compare
Aligne le module user sur le pattern établi par le module zone (#2487) : - `user-queries.utils.ts` : suppression du `userSelect`/`UserRecord` morts, signatures sur `Prisma.TransactionClient`, `createUser` purement DB (la validation du doublon email monte dans le service en `ConflictException`). - `user.service.ts` : extraction de `resolveAdminRoleIds`, `patchUsersInTx`, `emitImpactedRoleEvents` ; patch des rôles sous transaction. - `user.module.ts` : imports repliés sur `InfrastructureModule` (déjà exporté par celui-ci). Refs #2738 Co-authored-by: Automata <automata@shikanime.studio> Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr> Change-Id: I3bd632f95dd466e585698eba738efcd86a6a6964
cdb5dcb to
2826688
Compare
…nputs
Emit the full { id, oidcGroup, members } payload that the 2749 event
bridge consumers expect, drop as never from the controller spec by
parsing inputs through the shared schemas, and move the relationType
default into buildAllUsersWhere so the controller passes the query
straight through.
Co-authored-by: Automata <automata@shikanime.studio>
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: I28676aa618050a7042ed24dfa9e66b896a6a6964
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr> Change-Id: Ieb2ee298f5d0547bf988787721ed029a6a6a6964 Co-authored-by: Automata <automata@shikanime.studio>
Co-authored-by: Automata <automata@shikanime.studio>
Co-authored-by: Automata <automata@shikanime.studio>
…ion semantics Co-authored-by: Automata <automata@shikanime.studio>
Signed-off-by: Shikanime Deva <22115108+shikanime@users.noreply.github.com> Co-authored-by: Automata <automata@shikanime.studio>
Aligne le module user sur le pattern établi par le module zone (#2487) : - `user-queries.utils.ts` : suppression du `userSelect`/`UserRecord` morts, signatures sur `Prisma.TransactionClient`, `createUser` purement DB (la validation du doublon email monte dans le service en `ConflictException`). - `user.service.ts` : extraction de `resolveAdminRoleIds`, `patchUsersInTx`, `emitImpactedRoleEvents` ; patch des rôles sous transaction. - `user.module.ts` : imports repliés sur `InfrastructureModule` (déjà exporté par celui-ci). Refs #2738 Co-authored-by: Automata <automata@shikanime.studio> Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr> Change-Id: I3bd632f95dd466e585698eba738efcd86a6a6964
`AllUsersQuerySchema` étant exporté, l'alias `AllUsersQuery` est redondant ; les consommateurs dérivent le type par `z.infer`. `LettersQuery` est conservé (utilisé par le client). Refs #1889 Co-authored-by: Automata <automata@shikanime.studio> Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr> Change-Id: I5d954715680b8fbcd866edf4bb300dc36a6a6964
Co-authored-by: Automata <automata@shikanime.studio> Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
- supprimer UserService.createUser et les helpers createUser/getUserByEmail (aucun appelant ni route au contrat : chemin mort signalé en revue) - supprimer l'import faker inutilisé de user.controller.spec.ts - verrouiller par spec : 400 (BadRequestException) sur adminRole inconnue, take:5 sur la recherche par lettres, émission union avant ∪ après Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr> Co-authored-by: Automata <automata@shikanime.studio>
Reflect.getMetadata assertions pass whether or not the guard is enforced and add no behavioural coverage; the guard logic stays covered in user.guard.spec.ts and the controller delegation tests are untouched. Co-authored-by: Automata <automata@shikanime.studio> Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
…nputs
Emit the full { id, oidcGroup, members } payload that the 2749 event
bridge consumers expect, drop as never from the controller spec by
parsing inputs through the shared schemas, and move the relationType
default into buildAllUsersWhere so the controller passes the query
straight through.
Co-authored-by: Automata <automata@shikanime.studio>
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: I28676aa618050a7042ed24dfa9e66b896a6a6964
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr> Change-Id: Ieb2ee298f5d0547bf988787721ed029a6a6a6964 Co-authored-by: Automata <automata@shikanime.studio>
Co-authored-by: Automata <automata@shikanime.studio>
GET /api/v1/users/matching stays public like the legacy router. Co-authored-by: Automata <automata@shikanime.studio> Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr> Change-Id: Ie8d52f472340f7fe114fbe25f11a32746a6a6964
Co-authored-by: Automata <automata@shikanime.studio> Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr> Change-Id: I1601b269c95ef1a8b6496ac93335e2a06a6a6964
4179d43 to
8731b8a
Compare
Co-authored-by: Automata <automata@shikanime.studio>
|
StephaneTrebel
left a comment
There was a problem hiding this comment.
Approbation renouvelée : le filtre memberOfIds utilise désormais la relation Prisma projectMembers, tandis que GET /api/v1/users/matching reste public. Fils résolus ; aucune régression identifiée sur cette tête.
Aligne le module user sur le pattern établi par le module zone (#2487) : - `user-queries.utils.ts` : suppression du `userSelect`/`UserRecord` morts, signatures sur `Prisma.TransactionClient`, `createUser` purement DB (la validation du doublon email monte dans le service en `ConflictException`). - `user.service.ts` : extraction de `resolveAdminRoleIds`, `patchUsersInTx`, `emitImpactedRoleEvents` ; patch des rôles sous transaction. - `user.module.ts` : imports repliés sur `InfrastructureModule` (déjà exporté par celui-ci). Refs #2738 Co-authored-by: Automata <automata@shikanime.studio> Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr> Change-Id: I3bd632f95dd466e585698eba738efcd86a6a6964
Aligne le module user sur le pattern établi par le module zone (#2487) : - `user-queries.utils.ts` : suppression du `userSelect`/`UserRecord` morts, signatures sur `Prisma.TransactionClient`, `createUser` purement DB (la validation du doublon email monte dans le service en `ConflictException`). - `user.service.ts` : extraction de `resolveAdminRoleIds`, `patchUsersInTx`, `emitImpactedRoleEvents` ; patch des rôles sous transaction. - `user.module.ts` : imports repliés sur `InfrastructureModule` (déjà exporté par celui-ci). Refs #2738 Co-authored-by: Automata <automata@shikanime.studio> Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr> Change-Id: I3bd632f95dd466e585698eba738efcd86a6a6964

2 New Issues
0 Fixed Issues
0 Accepted Issues
Issues liées
Refs #1889
Quel est le comportement actuel ?
Les routes d'administration des utilisateurs (
/api/v1/users) sont servies par l'ancienne application Fastifyapps/server.Quel est le nouveau comportement ?
Migration du module
userversapps/server-nestjs:UserController,UserService,UserModule.user-queries.utils.ts: sélections Prisma typées.main.module.ts.apps/server/src/resources/user/(400 sur rôle admin inconnu,take: 5sur la recherche, émissionuser.upsertpar rôle).Cette PR introduit-elle un breaking change ?
Non.
Autres informations
Recréée pour #1889 (remplace #2498, non réouvrable après suppression de branche).